// 作用类似于后端的VO或者DTO类
// 登录
export interface LoginParams {
    email: string;
    password: string;
}

// 用户表单登录对象
export type UserLoginVO = {
    username: string
    password: string
    captchaVerification: string
}

// 用户对象
export type UserVO = {
    id: number
    username: string
    nickname: string
    deptId: number
    email: string
    mobile: string
    sex: number
    avatar: string
    loginIp: string
    loginDate: string
}

// 用户信息对象
export type UserInfoVO = {
    permissions: []
    roles: []
    user: {
        avatar: string
        id: number
        nickname: string
    }
}

// 用户详情
export type UserInfo = {
    id: string;
    name: string;
    avatar: string | any;
}

export type FormVO = {
    id: number
    name: string
    conf: string
    fields: string[]
    status: number
    remark: string
    createTime: string
}

declare interface PageParam {
    pageSize?: number
    pageNo?: number
}

export interface UserPageReqVO extends PageParam {
    deptId?: number
    username?: string
    mobile?: string
    status?: number
    createTime?: Date[]
}

// 属性或参数中使用 ？：表示该属性或参数为可选项
// 属性或参数中使用 ！：表示强制解析，变量后使用 ！：表示类型推断排除null、undefined

// interface 和 type 被 TS 设计出来，是完全不同的东西，有各自的职责。type在使用时需要使用 = 等于号进行类型别名赋值
// interface 是接口，用于描述一个对象。类比Java中的接口
// type 是类型别名，用于给各种类型定义别名，让 TS 写起来更简洁、清晰。
// 只是有时候两者都能实现同样的功能，才会经常被混淆
// 平时开发中，一般使用组合或者交叉类型的时候，用 type。
// 一般要用类的 extends 或 implements 时，用 interface。
